﻿#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)
#include<stdio.h>
#include<assert.h>
#include <stdio.h>
#include<string.h>
//int main()
//{
//	int arr[10] = { 0 };
//	//输⼊
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//输⼊
//	int* p = arr;
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int* p = NULL;
//	int arr[10] = { 0 };
//	
//	printf("%d ", *p);
//	return 0;
//}
//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//arr是一个整形一维数组。

//int main()
//{
//	int arr[10] = { 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	
//	int* p = arr;
//	assert(p != NULL);
//	for (int i = 0; i < sz; i++)
//	{
//		scanf("%d", p+i);
//	}
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}
//实现一个对整形数组的冒泡排序
//void mp(int* arr, int sz)
//{
//	assert(arr != NULL);
//	for (int i = 0; i < sz - 1; i++)
//	{
//		int j = 0;
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			int tmp = 0;
//			if (arr[j] > arr[j + 1])
//			{
//				tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
// 
//	}
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d", *arr+i);
//	}
//}
//int main()
//{
//	int arr[5] = { 5,4,3,2,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	mp(arr, sz);
//	return 0;
//}
//题目：
//输入一个整数数组，实现一个函数，
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，
//所有偶数位于数组的后半部分。
//void classify(int* arr, int sz)
//{
//	assert(arr != NULL);
//	for (int i = 0; i < sz - 1; i++)
//	{
//		int j = 0;
//		int tmp = 0;
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (arr[j] % 2 == 1 )
//			{
//				tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//		
//	}
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(arr + i));
//	}
//}
//int main()
//{
//	int arr[5] = { 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < sz; i++)
//	{
//		scanf("%d", arr + i);
//	}
//	classify(arr, sz);
//	return 0;
//}
//编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？
//输入例子 :
//1999 2299
//输出例子 : 7
//void difbit(int a, int b)
//{
//	int count = 0;
//	int c = a ^ b;
//	for (int i = 0; i < 32; i++)
//	{
//		if (((c >> i) & 1) == 1)
//		{
//			count++;
//		}
//	}
//	printf("%d", count);
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d%d",&a,&b);
//	difbit(a, b);
//
//	return 0;
//实现一个函数，可以左旋字符串中的k个字符。
//例如：
//ABCD左旋一个字符得到BCDA
//ABCD左旋两个字符得到CDAB
//void leftro(char* arr, int sz,int a)
//{
//	//while (a)
//	//{
//	//	char tmp = {0};
//	//	for (int i = 0; i < sz -2; i++)
//	//	{
//	//		tmp = arr[i];
//	//		arr[i] = arr[i + 1];
//	//		arr[i + 1] = tmp;
//	//	}
//	//	a--;
//	//}
//	//printf("%s", arr);
//	//方法二 地址指针方法
//	while (a)
//	{
//		char* brr = arr;
//		char tmp = *brr;
//		while (*(brr + 1) != '\0')
//		{
//			*brr = *(brr + 1);
//			brr ++;
//		}
//		*brr = tmp;
//		a--;
//	}
//}
//int main()
//{
//	char arr[] = "ABCD";
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int a = 0;
//	scanf("%d", &a);
//	leftro(arr, sz,a);
//	printf("%s", arr);
//	
//	return 0;
//}写一个函数，可以逆序一个字符串的内容。
//void reverse(char* arr, int sz)
//{
//	assert(arr != NULL);
//	for (int i = 0; i < sz - 2; i++)
//	{
//		for (int j = 0; j < sz - 2 - i; j++)
//		{
//			int tmp = 0;
//
//			if (arr[j] < arr[j + 1])
//			{
//				tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//			
//		}
//		
//	}
//	
//	printf("%s\n", arr);
//}
//int main()
//{
//	char arr[] = "mazeqi";
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	reverse(arr, sz);
//	printf("%s", arr);
//	return 0;
//}写一个函数，判断一个字符串是否为另外一个字符串旋转之后的字符串。
//例如：给定s1 = AABCD和s2 = BCDAA，返回1
//给定s1 = abcd和s2 = ACBD，返回0.
//AABCD左旋一个字符得到ABCDA
//AABCD左旋两个字符得到BCDAA
//AABCD右旋一个字符得到DAABC
//int leftro(char* arr, char* brr,  int sz)
//{
//	while (sz - 1)
//	{
//		char* srr = arr;
//		char tmp = *srr;
//		while (*(srr + 1) != '\0')
//		{
//			*srr = *(srr + 1);
//			srr++;
//		}
//		*srr = tmp;
//		int ret = strcmp(arr, brr);
//		if (ret == 0)
//		{
//			return 1;
//		}
//		sz --;
//	}
//	return 0;
//}
//int main()
//{
//	char arr[6] = "AABCD";
//	char brr[6] = "BCDAA";
//	char crr[6] = "bcdaa";
//	scanf("%s", &brr);
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	printf("%d ", leftro(arr, brr,  sz));
//	return 0;
//}
//int GCD(int a, int b, int gcd)
//{
//	int i = 0;
//	for (i = 20; i < a; i--)
//	{
//		if (a % i == 0 && b % i == 0)
//			break;
//	}
//	return i;
//}
//
//
//int main()
//{
//	int a = 20;
//	int b = 40;
//	int gcd = 0;
//	int maxgcd = GCD(a, b, gcd);
//	printf("maxgcd:%d \n", maxgcd);
//	return 0;
//}
//void every(int n)
//{
//	if (n > 9)
//	{
//		every(n / 10);
//	}
//	printf("%d\n", n % 10);
//}
//int main()
//{
//	int n = 0;
//	printf("请输入一个数字：");
//	scanf("%d", &n);
//	every(n);
//	return 0;
//}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a ,& b);
	if (a >= b)
	{
		for (int i = b; i > 0; i--)
		{
			if (a % i == 0 && b % i == 0)
			{
				printf("最大公约数是 %d\n", i);
				break;
			}
		}
	}
	if (a < b)
	{
		for (int j = a; j > 0; j--)
		{
			if (a % j == 0 && b % j == 0)
			{
				printf("最大公约数是 %d\n", j);
				break;
			}
		}
	}
	return 0;
}